package com.yang;

import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.AsyncPlayerChatEvent;
import org.bukkit.plugin.java.JavaPlugin;

import java.util.ArrayList;
import java.util.List;

public final class YangBan extends JavaPlugin implements Listener {

    private List<String> nameList = new ArrayList<>();

    @Override
    public void onEnable() {
        // 注册事件监听器
        Bukkit.getPluginManager().registerEvents(this, this);
        // 注册命令处理器
        Bukkit.getPluginCommand("yangBan").setExecutor(this);
        Bukkit.getPluginCommand("yangBanOut").setExecutor(this);
        Bukkit.getPluginCommand("yangBanList").setExecutor(this);
    }

    @Override
    public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
        if (label.equalsIgnoreCase("yangBan")) {
            // 添加玩家到封禁列表
            if (args.length > 0) {
                String playerName = args[0];
                nameList.add(playerName);
                sender.sendMessage(ChatColor.GREEN + "成功添加玩家 " + playerName + " 到封禁列表！");
            } else {
                sender.sendMessage(ChatColor.RED + "请提供玩家名字！");
            }
        } else if (label.equalsIgnoreCase("yangBanOut")) {
            // 从封禁列表移除玩家
            if (args.length > 0) {
                String playerName = args[0];
                nameList.remove(playerName);
                sender.sendMessage(ChatColor.GREEN + "成功从封禁列表移除玩家 " + playerName + "！");
            } else {
                sender.sendMessage(ChatColor.RED + "请提供玩家名字！");
            }
        } else if (label.equalsIgnoreCase("yangBanList")) {
            // 显示封禁列表中的玩家
            sender.sendMessage(ChatColor.YELLOW + "封禁列表中的玩家:");
            for (String playerName : nameList) {
                sender.sendMessage(ChatColor.YELLOW + " - " + playerName);
            }
        } else {
            sender.sendMessage(ChatColor.RED + "未知命令！");
        }

        return true;
    }

    // 监听玩家聊天事件
    @EventHandler
    public void onAsyncPlayerChat(AsyncPlayerChatEvent event) {
        Player player = event.getPlayer();
        String playerName = player.getName();

        // 检查是否有被封禁的玩家在消息中
        // 检查是否有被封禁的前缀在玩家名字中
        // 检查是否有被封禁的前缀在玩家名字中
        for (String bannedPrefix : nameList) {
            if (playerName.startsWith(bannedPrefix)) {
                event.setCancelled(true); // 取消聊天事件
                player.sendMessage(ChatColor.RED + "聊天被封禁了！ 误封请联系群主！群号: 590798993");
                return; // 一旦发现被封禁的前缀，直接返回
            }
        }

        // 检查是否有被封禁的后缀在玩家名字中
        for (String bannedSuffix : nameList) {
            if (playerName.endsWith(bannedSuffix)) {
                event.setCancelled(true); // 取消聊天事件
                player.sendMessage(ChatColor.RED + "聊天被封禁了！ 误封请联系群主！群号: 590798993");
                return; // 一旦发现被封禁的后缀，直接返回
            }
        }
    }
}